package com.example.server1.config;

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;

/**
 * @author zhangW
 * @create 2024-12-10-10:00
 */
@Aspect
@Component
public class LogAop {
    @Pointcut("@annotation(com.example.server1.config.LogEnable)")//定义切点
    public void pointMethod(){

    }

    @Around("pointMethod()")//定义环绕通知
    public Object  aroundMethod(ProceedingJoinPoint joinPoint) throws Throwable {
        long start = System.currentTimeMillis();  // 记录开始时间
        // 执行目标方法
        Object proceed = joinPoint.proceed();//方法开始执行
        long end = System.currentTimeMillis();  // 记录结束时间
        long executionTime = end - start;  // 计算方法执行时间
        // 打印日志（这里可以替换为其他的日志框架，如 Logback）
        System.out.println(joinPoint.getSignature() + " executed in " + executionTime + "ms");
        return proceed;  // 返回目标方法的执行结果

    }
}
